Omet navegació

16.4 Sensor 0220: Mesura de CO2, Temperatura i Humitat + Exemple amb dades

Vols mesurar la Concentració de CO2, la Temperatura i la Humitat relativa.

Et caldrà fer aquest muntatge per enregistrar les dades a una MicroSDHC integrada a una shield connectada a Arduino.

Esquema elèctric NDIR (SEN0220) , Temperatura i Humitat amb Arduino
C. Ferrando (CC BY-NC-SA)

El programa serà aquest.

// Enregistrat  en una MicroSDHC de la concentració de CO2 llegida pel sensor SEN0220 i de la Temperatura i Humitat amb el RHT03
// Per fer aquest programa s'han gastat les fonts que segueixen
// Font1: http://playground.arduino.cc/Main/DHT11Lib
// Font2: https://www.arduino.cc/en/Tutorial/Files
// Font3= https://www.dfrobot.com/wiki/index.php/Infrared_CO2_Sensor_0-50000ppm_SKU:_SEN0220
// created   Nov 2010 by David A. Mellis
// modified 9 Apr 2012 by Tom Igoe
// Created Tiequan Shao: tiequan.shao@sandboxelectronics.com
// Created  Peng Wei:     peng.wei@sandboxelectronics.com
// Modified by Leff from DFRobot, leff.wei@dfrobot.com, 2016-4-21, make the algorithm clearer to user
// Created at  2016-6-6 by lg.gang(lg.gang@qq.com)
// Modificat el 26 de març de 2017 per Carles Ferrando

#include <SD.h>
File myFile;
#include <dht.h>
dht DHT;
#define DHT22_PIN 7
#include <Time.h>  

//Definim temperatura i humitat relativa reals mesurades pel sensor RHT03
float temperatura; // T en ºC
float humitat; // Humitat relativa %

//Definim la data i hora per configurar el rellotge
int hora;
int minut;
int segon;
int dia;
int mes;
int any;


float valorRealCO2  ; // CO2 en ppm


#include <SoftwareSerial.h>
SoftwareSerial mySerial(5, 6); // RX, TX
unsigned char hexdata[9] = {0xFF,0x01,0x86,0x00,0x00,0x00,0x00,0x00,0x79}; //Read the gas density command /Don't change the order

void setup()
{
 
  Serial.begin(9600);
  while (!Serial) {

  }
  mySerial.begin(9600);


  //setTime(hr,min,sec,day,month,yr); // CAL POSAR L-HORA REAL I LA DATA AL COMENÇAR LA CLASSE A LA RATLLA DE SOTA
    setTime(17,10 ,00,26,3,2017); //  CAL POSAR L-HORA REAL I LA DATA AL COMENÇAR LA CLASSE ************************************************

    Serial.println("IES Gabriel Ciscar Aula Tecnologia 3");

  Serial.print("Initializing SD card...");
  // On the Ethernet Shield, CS is pin 4. It's set as an output by default.
  // Note that even if it's not used as the CS pin, the hardware SS pin 
  // (10 on most Arduino boards, 53 on the Mega) must be left as an output 
  // or the SD library functions will not work. 
  pinMode(10, OUTPUT);

  if (!SD.begin(10)) {
    Serial.println("Initcializacio feta!");
    return;
  }
  Serial.println("initcializacio feta.");

  if (SD.exists("dades.txt")) {
    Serial.println("dades.txt existeix.");
  }
  else {
    Serial.println("dades.txt no existeix.");
  }

  // Obre un fitxer nou i tanca'l de forma immediata:
  Serial.println("Creant dades.txt...");
  myFile = SD.open("dades.txt", FILE_WRITE);
  myFile.close();

  // Comprova si el fitxer existeix: 
  if (SD.exists("dades.txt")) {
    Serial.println("dades.txt existeix.");
  }
  else {
    Serial.println("dades.txt no existeix.");  
  }
 
}

void loop() 

{
   // Actualitza l_hora a partir de l_hora configurada al setTime
  time_t t = now(); 
  hora = hour(t);
  minut= minute(t);
  segon= second(t);
  dia = day(t);
  mes= month(t);
  any= year(t);
  
 // Llegeix les dades de Temperatura i Humitat
   int chk = DHT.read22(DHT22_PIN);
    humitat=DHT.humidity ;
    temperatura= DHT.temperature;
 
   //Bloc CO2 espectrometre
   mySerial.write(hexdata,9);
   delay(10000);//temps entre dues mesures de dades 10 segons **************************************************************************

 for(int i=0,j=0;i<9;i++)
 {
  if (mySerial.available()>0)
  {
     long hi,lo, CO2;
     int ch=mySerial.read();

    if(i==2){     hi=ch;   }   //High concentration
    if(i==3){     lo=ch;   }   //Low concentration
    if(i==8) {
               CO2=hi*256+lo;  //CO2 concentration
               valorRealCO2 = CO2;
      //Serial.print("CO2 concentration: ");
      //Serial.print(CO2);
      //Serial.println("ppm");      
               }

  }   
  
 } //Final bloc espectrometre
   
// Mostra les dades pel terminal serie
 File dataFile  = SD.open("dades.txt", FILE_WRITE);
 Serial.print(dia);
 Serial.print("/");
 Serial.print(mes);
 Serial.print("/");
 Serial.print(any);
 Serial.print(" ");
 Serial.print(hora);
 Serial.print(":");
 Serial.print(minut);
 Serial.print(":");
 Serial.print(segon);
 Serial.print(" ");
 Serial.print(";");
 Serial.print(" ");
 Serial.print(temperatura);
 Serial.print(" ");
 Serial.print(";");
 Serial.print(" ");
 Serial.print(humitat);
 Serial.print(" ");
 Serial.print(";");
 Serial.print(" ");
 Serial.println(valorRealCO2 );
   
//Guarda les dades a la targeta SD
if (dataFile) {
 dataFile.print(dia);
 dataFile.print(" ");
 dataFile.print(";");
 dataFile.print(" ");
 dataFile.print(mes);
  dataFile.print(" ");
 dataFile.print(";");
 dataFile.print(" ");
 dataFile.print(any);
  dataFile.print(" ");
 dataFile.print(";");
 dataFile.print(" ");
 dataFile.print(hora);
  dataFile.print(" ");
 dataFile.print(";");
 dataFile.print(" ");
 dataFile.print(minut);
 dataFile.print(" ");
 dataFile.print(";");
 dataFile.print(" ");
 dataFile.print(segon);
 dataFile.print(" ");
 dataFile.print(";");
 dataFile.print(" ");
 dataFile.print(temperatura);
 dataFile.print(" ");
 dataFile.print(";");
 dataFile.print(" ");
 dataFile.print(humitat);
 dataFile.print(" ");
 dataFile.print(";");
 dataFile.print(" ");
 dataFile.println(valorRealCO2);
 
 dataFile.close();
} 
else {
  Serial.println("Error en obrir el fitxer");
  // if the file didn't open, do something here
}


 }

El programa també els tens ací en format TiHCO2-NDIR-File.zip (zip - 2295 B)           

Exemple amb dades reals:

Hem tancat una lletuga en un recipient tancat durant 3 dies i hem provat el programa anterior amb els sensors de temperatura, humitat i de CO2.

Ací tens un diagrama amb la temperatura en º Centigrads durant els 3 dies que va durar l'experiment.

Temperatura vs temps
C. Ferrando (CC BY-NC-SA)

Ací tens un diagrama amb la humitat relativa en % durant els 3 dies que va durar l'experiment.

Humitat relativa vs temps
C. Ferrando (CC BY-NC-SA)

Ací tens un diagrama amb la concentració de CO2 en ppm durant els 3 dies que va durar l'experiment.

CO2 en ppm vs temps
C. Ferrando (CC BY-NC-SA)

Ací tens un diagrama amb la concentració de O2 en ppm durant els 3 dies que va durar l'experiment.

O2 % vs temps
C. Ferrando (CC BY-NC-SA)

1) Pots relacionar les gràfiques de Humitat, Concentració de CO2 i Concentració de O2 en cada tram de la gràfica amb les equacions químiques de la respiració i la fotosíntesi?

Fotosintesi

Fotosintesis:\quad \quad 6 \quad CO_2 \quad + \quad 6 \quad H_2O \quad + \quad llum \quad \to \quad C_6H_{12} O_6 \quad (glucosa) \quad + \quad 6 \quad O_2

Respiracio

Respiracio: \quad \quad C_6H_{12}O_6 \quad (sucre) \quad + \quad 6 \quad O_2 \to \quad 6 \quad CO_2 \quad + \quad 6 \quad H_2O \quad + \quad energia \quad (ATP)

2) Pots relacionar la llum que rep la lletuga amb la gràfica de la temperatura en cada tram, i relacionar-ho amb les altres gràfiques?